﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Elysium.Demo;
using SIIE_ERP.Codigo.MiPerfil;
using SIIE_ERP.Codigo;

namespace Elysium.Demo.MiPerfil
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MiPerfil : UserControl
    {
        private int IdUsuario;

        public MiPerfil(ref UsuarioActivo usuario)
        {
            InitializeComponent();
            LlenarCampos(usuario.IdUsuario);
        }

        public void LlenarCampos(int Id)
        {
            IdUsuario = Id;
            
            DataRow table = SIIE_ERP.BaseDatos.Configuracion.dbo_Sec_Usuario.Get_Usuario_Por_Id(Id).Rows[0];

            string Nombre = table["Nombre"].ToString();
            string Username = table["UserName"].ToString();
            string Telefono = table["Telefono"].ToString();
            string Puesto = table["Puesto"].ToString();
            string Email = table["Email"].ToString();
            int Pais = Int32.Parse(table["Id_Pais"].ToString());
            int Estado = Int32.Parse(table["Id_Estado"].ToString());

            LabelUsuario.Content = Username;
            LabelPuesto.Content = Puesto;
            LabelEmail.Content = Email;

            CampoNombre.Text = Nombre;
            CampoTelefono.Text = Telefono;
            SIIE_ERP.View.ComboBoxUI.ComboPaisEstado(ref ComboPais, ref ComboEstado, Pais, Estado);              
        }
        
        private void Button_CambiarContrasena_Click(object sender, RoutedEventArgs e)
        {
            string AntiguaContrasena = AntiguaContrasena_Password.Password;
            string NuevaContrasena = NuevaContrasena_Password.Password;
            string ConfirmacionNuevaContrasena = ConfirmacionNuevaContrasena_Password.Password;

            CambiarContrasenaRespuesta Respuesta = MiPerfilCode.CambiarContrasena(IdUsuario,
                                                              AntiguaContrasena,
                                                              NuevaContrasena,
                                                              ConfirmacionNuevaContrasena);

            switch (Respuesta)
            {
                case CambiarContrasenaRespuesta.OK:
                    MessageBox.Show("Contraseña cambiada correctamente.");
                    AntiguaContrasena_Password.Password = "";
                    NuevaContrasena_Password.Password = "";
                    ConfirmacionNuevaContrasena_Password.Password = "";
                    break;
                case CambiarContrasenaRespuesta.ERROR_ANTERIOR:
                    MessageBox.Show("La contraseña anterior es incorrecta.");
                    break;
                case CambiarContrasenaRespuesta.NO_COINCIDEN:
                    MessageBox.Show("La nueva contraseña y la confirmación no coinciden.");
                    break;
                case CambiarContrasenaRespuesta.FORMATO_INVALIDO:
                    MessageBox.Show("Se debe especificar una contraseña.");
                    break;
                case CambiarContrasenaRespuesta.ERROR_BASEDEDATOS:
                    MessageBox.Show("Error");
                    break;
            }

            AntiguaContrasena_Password.Password = "";
            NuevaContrasena_Password.Password = "";
            ConfirmacionNuevaContrasena_Password.Password = "";
        }

        private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            
        }

        private void ButtonCancelar_Click(object sender, RoutedEventArgs e)
        {
            (this.Parent as ScrollViewer).Content = null;
        }

        private void ButtonGuardar_Click(object sender, RoutedEventArgs e)
        {
            string Nombre = CampoNombre.Text;
            string Telefono = CampoTelefono.Text;
            int IdPais = (int)ComboPais.SelectedValue;
            int IdEstado = (int)ComboEstado.SelectedValue;

            if (SIIE_ERP.BaseDatos.Configuracion.dbo_Sec_Usuario.Update_Usuario_InfoGral(IdUsuario,
                                                                                         IdPais,
                                                                                         IdEstado,
                                                                                         Nombre,
                                                                                         Telefono).Id == 1)
            {

                MessageBox.Show("Datos actualizados correctamente.");
            }
            else
            {
                // Posibles errores:
                //  - Perdida de conexion a la base de datos.
                //  - El usuario ya no existe.
                MessageBox.Show("Error al actualizar los datos.");
            }

        }

        private void ButtonInformacion_Click_1(object sender, RoutedEventArgs e)
        {
            WindowAyuda Ayuda = new Elysium.Demo.WindowAyuda("MiPerfil.htm", "Ayuda");
            Ayuda.Owner = SIIE_ERP.View.NavegacionUI.GetParentWindow(this); Ayuda.ShowDialog();
        }
    }
}
